Advances in technology have resulted in smaller and more powerful computing devices. For example, there currently exist a variety of portable personal computing devices, including wireless computing devices, such as portable wireless telephones, personal digital assistants (PDAs), and paging devices that are small, lightweight, and easily carried by users. More specifically, portable wireless telephones, such as cellular telephones and Internet Protocol (IP) telephones, can communicate voice and data packets over wireless networks. Further, many such wireless telephones include other types of devices that are incorporated therein. For example, wireless telephones can also include a digital still camera, a digital video camera, a digital recorder, and an audio file player. Also, such wireless telephones include a processor that can process executable instructions, including software applications, such as a web browser application, that can be used to access the Internet. As such, these wireless telephones can include significant computing capabilities.
Accessing a data cache of a processor consumes a significant amount power. The data cache conventionally includes a data array having multiple sets that each include a plurality of cache lines (e.g., storage locations). The data cache conventionally also includes a plurality of ways that each include a driver corresponding to at least one cache line (e.g., a cache block) of the data cache. In response to an instruction to access data stored in the data cache, all of the drivers are enabled (e.g., activated) to drive (via a plurality of data lines) the ways of a particular set of the data array to a multiplexer.
In parallel (e.g., concurrently) with all of the drivers being enabled, a tag lookup operation is performed, to identify a particular cache line within the data array. Based on a result of the tag lookup operation, data provided via a single driver (corresponding to a single cache line) is selected as an output. Driving ail of the ways for a set and performing the tag lookup operation cause power to be expended, and result in a power inefficiency considering that data from only a single cache line is output based on the instruction.
Similar power consumption issues exist with respect to accessing an instruction cache of the processor. Accesses to the instruction cache are frequently predictable and prediction methods utilizing predictable sequences of instructions may be used to identify a particular way of the instruction cache to be driven. However, accessing the data cache is more complex and less predictable than accessing the instruction cache. Accordingly, prediction techniques used for instruction cache accesses may not be applicable for predicting data cache accesses. Additionally, if a prediction technique were applied to a data cache, a performance penalty (e.g., a delay in processing) and an energy penalty would result from each misprediction (e.g., making an incorrect prediction) of a way to be accessed.